<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Default Values</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Data Definition"
HREF="ddl.html"><LINK
REL="PREVIOUS"
TITLE="Table Basics"
HREF="ddl-basics.html"><LINK
REL="NEXT"
TITLE="Constraints"
HREF="ddl-constraints.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="Table Basics"
HREF="ddl-basics.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="ddl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Data Definition</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Constraints"
HREF="ddl-constraints.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="DDL-DEFAULT"
>5.2. Default Values</A
></H1
><P
>   A column can be assigned a default value.  When a new row is
   created and no values are specified for some of the columns, those
   columns will be filled with their respective default values.  A
   data manipulation command can also request explicitly that a column
   be set to its default value, without having to know what that value is.
   (Details about data manipulation commands are in <A
HREF="dml.html"
>Chapter 6</A
>.)
  </P
><P
>   
   If no default value is declared explicitly, the default value is the
   null value.  This usually makes sense because a null value can
   be considered to represent unknown data.
  </P
><P
>   In a table definition, default values are listed after the column
   data type.  For example:
</P><PRE
CLASS="PROGRAMLISTING"
>CREATE TABLE products (
    product_no integer,
    name text,
    price numeric <B
CLASS="EMPHASIS"
>DEFAULT 9.99</B
>
);</PRE
><P>
  </P
><P
>   The default value can be an expression, which will be
   evaluated whenever the default value is inserted
   (<SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>not</I
></SPAN
> when the table is created).  A common example
   is for a <TT
CLASS="TYPE"
>timestamp</TT
> column to have a default of <TT
CLASS="LITERAL"
>CURRENT_TIMESTAMP</TT
>,
   so that it gets set to the time of row insertion.  Another common
   example is generating a <SPAN
CLASS="QUOTE"
>"serial number"</SPAN
> for each row.
   In <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> this is typically done by
   something like:
</P><PRE
CLASS="PROGRAMLISTING"
>CREATE TABLE products (
    product_no integer <B
CLASS="EMPHASIS"
>DEFAULT nextval('products_product_no_seq')</B
>,
    ...
);</PRE
><P>
   where the <TT
CLASS="LITERAL"
>nextval()</TT
> function supplies successive values
   from a <I
CLASS="FIRSTTERM"
>sequence object</I
> (see <A
HREF="functions-sequence.html"
>Section 9.15</A
>). This arrangement is sufficiently common
   that there's a special shorthand for it:
</P><PRE
CLASS="PROGRAMLISTING"
>CREATE TABLE products (
    product_no <B
CLASS="EMPHASIS"
>SERIAL</B
>,
    ...
);</PRE
><P>
   The <TT
CLASS="LITERAL"
>SERIAL</TT
> shorthand is discussed further in <A
HREF="datatype-numeric.html#DATATYPE-SERIAL"
>Section 8.1.4</A
>.
  </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="ddl-basics.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="ddl-constraints.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Table Basics</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="ddl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Constraints</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>